#ifndef INC_RECONNECTCOMMAND_H
#define INC_RECONNECTCOMMAND_H

#include "nodecommand.h"

#include <Poco/Net/SocketAddress.h>
using Poco::Net::SocketAddress;

namespace Commands{
	class ReconnectCommand: public NodeCommand {
		public:
			ReconnectCommand(SocketAddress reconAddr, id_type prevId, NodeData* nodedata = 0);
			~ReconnectCommand();
			
			/**
			 * Executes the command
			 */
			void execute();

			/**
			 * Returns the name by which the command is registered with a CommandFactory
			 * @return commandname
			 */
			string name();
			
			/**
			 * Return a string with which this command can be remade if it were fed into a CommandFactory
			 * @return representational string
			 */
			string repr();
			
			/**
			 * Return the creator to make this command given the representational string
			 * @return a CommandCreator for this Command
			 */
			CommandCreator creator();
		
		protected:
			virtual Document* toXML(Document* doc = 0);
		private:
			static Command* makeCommand(string r, void* s);
			static const string NAME;

			id_type _prevId;
			SocketAddress _reconAddr;
			id_type _count;
	};
}

#endif
